// app.js
App({
  globalData: {
    token: null,
    adminToken: null,
    apiUrl: 'http://localhost:8080',
    // apiUrl:'https://www.tuyitongpro.cn/api',
    user: null
  },

  onLaunch() {
    this.globalData.token = null;
    this.globalData.adminToken = null;
    this.globalData.user = null;
  },

  // 增强版 request，自动识别是否是文件上传请求
  request(options) {
    const url = this.globalData.apiUrl + options.url;

    // 判断是否是文件上传请求
    if (options.isUpload && options.filePath) {
      // 使用 wx.uploadFile 发起文件上传请求
      wx.uploadFile({
        url: url,
        filePath: options.filePath,
        name: options.fileName || 'file', // 默认字段名是 file
        formData: options.formData || {},
        header: {
          ...(this.globalData.token ? { 'authentication': `${this.globalData.token}` } : {}),
          ...(this.globalData.adminToken ? { 'token': `${this.globalData.adminToken}` } : {})
        },
        success(res) {
          try {
            const data = JSON.parse(res.data); // uploadFile 返回的是字符串格式
            if (res.statusCode >= 200 && res.statusCode < 300) {
              options.success && options.success(data);
            } else {
              options.fail && options.fail(res);
            }
          } catch (e) {
            console.error('解析上传响应失败:', e);
            options.fail && options.fail(e);
          }
        },
        fail(err) {
          console.error('文件上传失败:', err);
          options.fail && options.fail(err);
        }
      });
    } else {
      // 普通请求继续使用 wx.request
      wx.request({
        url: url,
        method: options.method || 'GET',
        data: options.data || {},
        header: {
          'content-type': 'application/json',
          ...(this.globalData.token ? { 'authentication': `${this.globalData.token}` } : {}),
          ...(this.globalData.adminToken ? { 'token': `${this.globalData.adminToken}` } : {})
        },
        success(res) {
          if (res.statusCode >= 200 && res.statusCode < 300) {
            options.success && options.success(res.data);
          } else {
            options.fail && options.fail(res);
          }
        },
        fail(err) {
          console.error('网络请求失败:', err);
          options.fail && options.fail(err);
        }
      });
    }
  }
});